<?php

/**
 * VPerfilLogic
 * @package model
 * @subpackage logic
 * 
 */
class VPerfilLogic extends VLogicModel {

    public function __construct() {
        parent::__construct(new VPerfilDAO());
    }

    public function ajaxIsPerfilSistema($params) {
        $nomePerfil = (string) $params['perfil'];
        $idSistema = (int) $params['idSistema'];
        $objPerfil = $this->obter("ide_sistema = '$idSistema' AND nom_perfil iLike '{$nomePerfil}'");
        if (is_object($objPerfil)) {
            return $objPerfil->getId();
        } else {
            return false;
        }
    }

    public function ajaxListPerfil($params) {
        /* Atributos do objeto que poderam ser ordenado */
        $atributos = array('nome', 'descricao', 'nomeSistema', 'status');
        $order = TDataTableHelper::mountOrderBy($atributos, $params['iSortCol_0'], $params['sSortDir_0']);
        unset($atributos);
        /* Colunas do banco a serem pesquisandas */
        $colunas = array('nom_perfil', 'des_perfil', 'nom_sistema', 'des_status' => array('A' => 'Ativo', 'D' => 'Desativado'));
        /* Montar string de pesquisa no where */
        $where = TDataTableHelper::mountSearch($colunas, $params['sSearch'], false);
        unset($colunas);
        /* Total de registros */
        $iTotal = $this->totalRegistro($where);
        /* Listar */
        $arrayListObject = $this->listar($where, $order, null, null, $params['iDisplayStart'], $params['iDisplayLength']);
        unset($where);
        /* Montar output */
        $output = TDataTableHelper::mountArrayOutPut($params['sEcho'], $iTotal);
        unset($iTotal);

        if (isset($arrayListObject[0])) {
            foreach ($arrayListObject as $object) {
                $status = ($object->getStatus() === 'A') ? "<spam class='fg-emerald'>Ativo</spam>" : "<spam class='fg-red'>Desativado</spam>";
                $linkPerfil = "<a href='index.php?Perfil/informar/id/{$object->getId()}'>{$object->getNome()}</a>";

                $output['aaData'][] = array(
                    utf8_encode($linkPerfil),
                    utf8_encode($object->getDescricao()),
                    utf8_encode($object->getNomeSistema()),
                    utf8_encode($status)
                );
                unset($status);
            }
        }
        unset($arrayListObject);

        return json_encode($output);
    }
    
    
    public function AjaxListPerfilFromSistema($params) {
        $exception = array();
        $exception['load'] = ExceptionORM::mountLoadException('VPerfil', array('id', 'nome'));
        $listPerfil = $this->listar("ide_sistema = '{$params['idSistema']}'", null, null, $exception);
        if (isset($listPerfil[0])) {
            return TAjaxHelper::mountArrayObjectToJson($listPerfil);
        } else {
            return false;
        }
    }

    public function ajaxListVPerfilFromUsuario($params) {

        /* Atributos do objeto que poderam ser ordenado */
        $atributos = array('nome', 'nomeSistema');
        $order = TDataTableHelper::mountOrderBy($atributos, $params['iSortCol_0'], $params['sSortDir_0']);
        /* Colunas do banco a serem pesquisandas */
        $colunas = array('nom_perfil', 'nom_sistema');
        /* Montar string de pesquisa */
        $seach = TDataTableHelper::mountSearch($colunas, $params['sSearch']);
        /* Definir where */
        $where = "ide_perfil IN ("
                . "SELECT ide_perfil "
                . "FROM seguranca.usuario__perfil "
                . "WHERE ide_usuario = '{$params['idUsuario']}'"
                . ") {$seach}";

        /* Total de registros */
        $iTotal = $this->totalRegistro($where);
        /* Listar */
        $arrayListObject = $this->listar($where, $order, null, null, $params['iDisplayStart'], $params['iDisplayLength']);
        /* Montar output */
        $output = TDataTableHelper::mountArrayOutPut($params['sEcho'], $iTotal);
        if (isset($arrayListObject[0])) {
            foreach ($arrayListObject as $objeto) {
                $output['aaData'][] = array(
                    utf8_encode($objeto->getNome()),
                    utf8_encode($objeto->getNomeSistema()),
                );
            }
        }

        return json_encode($output);
    }

}

?>